﻿/* AppFramework - Bussines application framework
 * 
 * Класс - адаптер БД MS SQL Server
 * Copyright 2011 by Vladimir Tashkinov
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace DatabaseInterface
{
    class DbMsSql
    {

 

            /// <summary>
            /// Для выполнения запросов к MySQL с возвращением 1 параметра.
            /// </summary>
            /// <param name="sql">Текст запроса к базе данных</param>
            /// <param name="connection">Строка подключения к базе данных</param>
            /// <returns>Возвращает значение при успешном выполнении запроса, текст ошибки - при ошибке.</returns>
            public static DbResult SqlScalar(string sql, string connection)
            {
                DbResult result = new DbResult();
                try
                {
                    System.Data.SqlClient.SqlConnection connRC = new System.Data.SqlClient.SqlConnection(connection);
                    System.Data.SqlClient.SqlCommand commRC = new System.Data.SqlClient.SqlCommand(sql, connRC);
                    connRC.Open();
                    try
                    {
                        result.ResultText = commRC.ExecuteScalar().ToString();
                        result.HasError = false;
                    }
                    catch (Exception ex)
                    {
                        result.ErrorText = ex.Message;
                        result.HasError = true;
                    }
                    connRC.Close();
                }
                catch (Exception ex)//Этот эксепшн на случай отсутствия соединения с сервером.
                {
                    result.ErrorText = ex.Message;
                    result.HasError = true;
                }
                return result;
            }


            /// <summary>
            /// Для выполнения запросов к MySQL без возвращения параметров.
            /// </summary>
            /// <param name="sql">Текст запроса к базе данных</param>
            /// <param name="connection">Строка подключения к базе данных</param>
            /// <returns>Возвращает True - ошибка или False - выполнено успешно.</returns>
            public static DbResult SqlNoneQuery(string sql, string connection)
            {
                DbResult result = new DbResult();
                try
                {
                    System.Data.SqlClient.SqlConnection connRC = new System.Data.SqlClient.SqlConnection(connection);
                    System.Data.SqlClient.SqlCommand commRC = new System.Data.SqlClient.SqlCommand(sql, connRC);
                    connRC.Open();
                    try
                    {
                        commRC.ExecuteNonQuery();
                        result.HasError = false;
                    }
                    catch (Exception ex)
                    {
                        result.ErrorText = ex.Message;
                        result.HasError = true;
                    }
                    connRC.Close();
                }
                catch (Exception ex)//Этот эксепшн на случай отсутствия соединения с сервером.
                {
                    result.ErrorText = ex.Message;
                    result.HasError = true;
                }
                return result;
            }

        


            


            /// <summary>
            /// Выполняет запрос выборки набора строк.
            /// </summary>
            /// <param name="sql">Текст запроса к базе данных</param>
            /// <param name="connection">Строка подключения к базе данных</param>
            /// <returns>Возвращает набор строк в DataSet.</returns>
            public static DbResultData SqlReturnDataset(string sql, string connection)
            {
                DbResultData result = new DbResultData();
                try
                {
                    System.Data.SqlClient.SqlConnection connRC = new System.Data.SqlClient.SqlConnection(connection);
                    System.Data.SqlClient.SqlCommand commRC = new System.Data.SqlClient.SqlCommand(sql, connRC);
                    connRC.Open();

                    try
                    {
                        System.Data.SqlClient.SqlDataAdapter AdapterP = new System.Data.SqlClient.SqlDataAdapter();
                        AdapterP.SelectCommand = commRC;
                        DataSet ds1 = new DataSet();
                        AdapterP.Fill(ds1);
                        result.ResultData = ds1.Tables[0];
                    }
                    catch (Exception ex)
                    {
                        result.HasError = true;
                        result.ErrorText = ex.Message;
                    }
                    connRC.Close();
                }
                catch (Exception ex)//Этот эксепшн на случай отсутствия соединения с сервером.
                {
                    result.ErrorText = ex.Message;
                    result.HasError = true;
                }

                return result;

            }

        }
    
}
